// utils/http.js  
// 支付方法
import {
	payAppSubmit,
} from "@/api/apis.js"

import {
	toSLetter
} from "@/utils/common.js"
/**  
 * 封装uni.request请求  
 * @param {String} url 请求的URL  
 * @param {Object} options 额外的请求选项  
 * @returns {Promise<any>} 返回Promise，解析为响应数据  
 */


//发起支付 
async function onAlipay(payApp) {
	// 发送请求  
	const res = await payAppSubmit(payApp)
	return res
}

// 第二个请求的函数，它依赖于第一个请求的结果，并返回一个Promise  

// 支付宝
async function aliPay(deta) {
	console.log(deta);
	// 假设第二个请求的URL或参数依赖于第一个请求的结果  
	let data = {
		provider: 'alipay',
		orderInfo: deta.result, //支付宝订单数据
	}
	const res = await uni.requestPayment(data)
	// console.log(res);
	return res
}

// 微信
async function wxPay(deta) {
	// console.log(deta);
	// 假设第二个请求的URL或参数依赖于第一个请求的结果 
	let orderPay = toSLetter(deta.result)
	let data = {
		provider: 'wxpay',
		orderInfo: orderPay, //微信订单数据
	}
	const res = await uni.requestPayment(data)
	// console.log(res);
	return res
}

// 封装两个请求的函数  
async function fetchData(payApp, current) {
	console.log(payApp, current);
	try {
		// 等待第一个请求完成  
		const responseFirst = await onAlipay(payApp);
		// console.log(responseFirst);
		// 检查第一个请求是否成功  
		if (responseFirst.success) {
			// 使用第一个请求的结果调用第二个请求  
			// 支付宝
			if (current == 2) {
				const responseSecond = await aliPay(responseFirst);
				console.log("支付宝", responseSecond);
				// 检查第二个请求是否成功
				if (responseSecond.errMsg == "requestPayment:ok") {
					// 如果第二个请求也成功了，返回成功的结果  
					return responseSecond;
				} else {
					// 如果第二个请求失败了，抛出错误  
					throw new Error('支付宝第二个请求失败了');
				}
			} else if (current == 1) {
				// 微信
				const responseSecond = await wxPay(responseFirst);
				console.log("微信", responseSecond);
				// 检查第二个请求是否成功
				if (responseSecond.errMsg == "requestPayment:ok") {
					// 如果第二个请求也成功了，返回成功的结果  
					return responseSecond;
				} else {
					// 如果第二个请求失败了，抛出错误  
					throw new Error('微信第二个请求失败了');
				}
			}

		} else {
			// 如果第一个请求失败了，抛出错误  
			throw new Error('First request failed', error);
		}
	} catch (error) {
		// 处理请求过程中可能出现的任何错误  
		console.error('支付失败', error);
		// 可以选择在这里返回一个错误对象或null，具体取决于你的应用需求  
		return error; // 或者 throw error 来让调用者处理错误  
	}
}

export {
	fetchData
}